【Organizations】組織単位で CloudFormation StackSetsを簡単にデプロイしてみる
AWS Organizations はマルチアカウントの管理、統制に役立つサービスです。
それぞれの AWSアカウントを 組織単位(Organizational Unit: OU) に所属させ、 グループ化することができます。 組織単位で AWSのリソース設定や セキュリティの統制が可能になります。
一方、 AWS CloudFormation(CFn) は AWSリソースを JSON, YAML形式で表現するためのサービスです。
AWSリソースをコード(テンプレート) で表現することで構成管理を容易にします。 再利用性の向上などに役立ちます。 StackSets 機能を使うことで 1つのテンプレートから 複数のリージョン/複数のAWSアカウントへリソース群(スタック)を展開できます。
Organizations と CloudFormation StackSets の連携 で 組織単位で簡単に StackSetsを利用 できるので、 実際にマネジメントコンソール上でやってみます。
目次
Organizations と CFn StackSets
通常、 CFn StackSetsを利用するには、いくつかの準備が必要です (参考: CloudFormation StackSetsを試してみた | Developers.IO)。
- StackSets を作成するアカウントに
AdministrationRole
ロール を作成 - スタックがデプロイされるアカウントに
StackSetsExecutionRole
ロールを作成
このように、それぞれ適切なIAMロールを作成する必要がありました。
が、以下アップデートから Organizations 管理化のアカウントに対しては IAMロール作成不要、OU単位 で 簡単にデプロイ出来るようになっています。
新機能: AWS CloudFormation StackSets が AWS Organization のマルチアカウントで利用可能に | Amazon Web Services ブログ
やってみる
実際に 特定のOU配下の複数アカウントへCFnテンプレートを展開してみます。
以下項目説明します。
- (準備) アクセスの有効化
- StackSets の作成
- StackSets の作成中
- StackSets の作成後
(準備) アクセスの有効化
まず Organizations と CFn StackSets の連携を許可する必要があります。
マスターアカウント の AWS Organizations のページから 設定
を選択します。
AWS のサービスに対する信頼されたアクセス
にある CFn StackSets 欄を探し、
有効化しましょう。
StackSets の作成
マスターアカウント の CFn StackSets の画面に行きます。
▼ StackSetsの作成
を選択します。
▼ テンプレートを選択します。 (今回は ローカルにある CFnテンプレートをアップロードして指定します)。
▼ 適当に StackSets名、StackSetsの説明(オプション)、パラメータ(テンプレート依存) を指定します。
▼ StackSets オプションの設定では サービスマネージドアクセス許可 を選択します。
▼ デプロイオプションの設定 です。 それぞれのオプションをざっくり説明すると下図になります。
※自動デプロイについては以下ブログが参考になります。
今回は 以下のように、 特定のOUへ、自動デプロイ無し
で設定しました。
続けて リージョン、デプロイオプションを指定します。 (今回は 東京リージョン、 デフォルトのデプロイオプションとします)
▼ レビュー画面で内容を再確認して問題なければ 送信
を選択します。
StackSets の作成中
▼ 送信
後、以下のようにオペレーションが実行されていきます。
▼ 「スタックインスタンス」タブで作成中のスタックの状況が確認できます。 順次デプロイされていくので、待ちましょう。
StackSets の作成後
▼ 最終的に全てのスタックのステータスが CURRENT
に、
オペレーションが SUCCEEDED
となれば OKです。
▼ 実際にスタックが生成されたメンバーアカウントのCFn画面を見てみます。
StackSet-(StackSets名)-(適当な文字列)
のスタックが CREATE_COMPLETE
となっていました。
おわりに
Organizations と連携した 組織単位の CFn StackSets デプロイを試してみました。
通常は AWSアカウントIDを列挙して StackSetsデプロイする必要がありました。 Organizationsと連携すると、OU単位のデプロイが可能になるため、 プロセスを簡素化できます。
また、自動デプロイのオプションもあるため、 新規アカウント作成、OU加入時の定型作業の自動化も見込めます。
複数アカウントのリソース管理・運用にぜひ利用したいところです。
少しでもどなたかのお役に立てば幸いです。